﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IClientLogger.cs" company="Spenta Consulting">
//   (c) Copyright 2011
// </copyright>
// <summary>
//   Interface for StreetCare client logger
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Spenta.StreetCare.Silverlight.Logging
{
    #region Using Directives

    using System;
    using StreetCareAPI;

    #endregion

    /// <summary>
    /// Interface for StreetCare client logger
    /// </summary>
    public interface IClientLogger
    {
        /// <summary>
        /// Writes a critical event to the log.
        /// </summary>
        /// <param name="message">The message.</param>
        void WriteCritical(string message);

        /// <summary>
        /// Writes a critical event to the log.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="ex">The exception.</param>
        void WriteCritical(string message, Exception ex);

        /// <summary>
        /// Writes a critical event to the log.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="ex">The exception.</param>
        void WriteCritical(string message, ServiceException ex);

        /// <summary>
        /// Writes an error event to the log.
        /// </summary>
        /// <param name="message">The message.</param>
        void WriteError(string message);

        /// <summary>
        /// Writes an error event to the log.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="ex">The exception.</param>
        void WriteError(string message, Exception ex);

        /// <summary>
        /// Writes an error event to the log.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="ex">The exception.</param>
        void WriteError(string message, ServiceException ex);

        /// <summary>
        /// Writes an information event to the log.
        /// </summary>
        /// <param name="message">The message.</param>
        void WriteInfo(string message);

        /// <summary>
        /// Writes a warning event to the log.
        /// </summary>
        /// <param name="message">The message.</param>
        void WriteWarning(string message);

        /// <summary>
        /// Writes a warning event to the log.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="ex">The exception.</param>
        void WriteWarning(string message, Exception ex);

        /// <summary>
        /// Writes a warning event to the log.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="ex">The exception.</param>
        void WriteWarning(string message, ServiceException ex);
    }
}
